package modelo.dao;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.List;

import jdbc.ConnectionFactory;

import modelo.Fornecedor;

public class FornecedorDAO {

	private Connection connection;

	private void ForncedorDAO() {
		this.connection = new ConnectionFactory().getConnection();

	}

	public void incluir(Fornecedor fornecedor) {
		String sql = "insert into fornecedor (idfornecedor, nome, cnpj, email, cidade, estado, logradouro, cep, telefone) "
				+ "values(?,?,?,?,?,?,?,?,?)";

		try {
			PreparedStatement stmt = connection.prepareStatement(sql);

			stmt.setInt(1, fornecedor.getIdFornecedor());
			stmt.setString(2, fornecedor.getNome());
			stmt.setString(3, fornecedor.getCnpj());
			stmt.setString(4, fornecedor.getEmail());
			stmt.setString(5, fornecedor.getCidade());
			stmt.setString(6, fornecedor.getEstado());
			stmt.setString(7, fornecedor.getLogradouro());
			stmt.setString(8, fornecedor.getCep());
			stmt.setString(9, fornecedor.getTelefone());

			stmt.execute();
			stmt.close();
			connection.close();
		} catch (Exception e) {
			throw new RuntimeException(e);
		}
	}

	public List<Fornecedor> carrega() {

		String sql = "select * from fornecedor";
		try {
			List<Fornecedor> fornecedores = new ArrayList<Fornecedor>();
			PreparedStatement stmt = this.connection.prepareStatement(sql);
			ResultSet rs = stmt.executeQuery();

			while (rs.next()) {
				Fornecedor fornecedor = new Fornecedor();

				fornecedor.setIdFornecedor(rs.getInt("idfornecedor"));
				fornecedor.setNome(rs.getString("nome"));
				fornecedor.setCnpj(rs.getString("cnpj"));
				fornecedor.setEmail(rs.getString("email"));
				fornecedor.setCidade(rs.getString("cidade"));
				fornecedor.setEstado(rs.getString("estado"));
				fornecedor.setLogradouro(rs.getString("logradouro"));
				fornecedor.setCep(rs.getString("cep"));
				fornecedor.setTelefone(rs.getString("telefone"));

				fornecedores.add(fornecedor);

			}
			rs.close();
			stmt.close();

			return fornecedores;
		} catch (Exception e) {
			throw new RuntimeException(e);
		}
	}

	public void alterar(Fornecedor fornecedor) {
		String sql = "update from fornecedor set nome=?, cnpj=?, email=?, "
				+ "cidade=?, estado=?, logradouro=?, cep=?, telefone=? where idfornecedor=?";

		try {
			PreparedStatement stmt = connection.prepareStatement(sql);
			stmt.setString(1, fornecedor.getNome());
			stmt.setString(2, fornecedor.getCnpj());
			stmt.setString(3, fornecedor.getEmail());
			stmt.setString(4, fornecedor.getCidade());
			stmt.setString(5, fornecedor.getEstado());
			stmt.setString(6, fornecedor.getLogradouro());
			stmt.setString(7, fornecedor.getCep());
			stmt.setString(8, fornecedor.getTelefone());
			stmt.setInt(9, fornecedor.getIdFornecedor());

			stmt.execute();
			stmt.close();
		} catch (Exception e) {
			throw new RuntimeException(e);
		}
	}

	public void remover(Fornecedor fornecedor) {
		String sql = "remove from fornecedor where id=?";

		try {
			PreparedStatement stmt = connection.prepareStatement(sql);
			stmt.setInt(1, fornecedor.getIdFornecedor());

			stmt.execute();
			stmt.close();
		} catch (Exception e) {
			throw new RuntimeException(e);
		}

	}
}
